#ifndef __BUOLA_GUI_DND_CDROPTARGET_H__
#define __BUOLA_GUI_DND_CDROPTARGET_H__

#include <buola/gui.h>

namespace buola { namespace gui {

class CDropTarget
{
protected:
    CDropTarget();
    virtual ~CDropTarget();

public:
    void AddDropWindow(const PWindow &pWindow);

public:
    virtual void OnDropEnter(CDrop*,const CPoint_d&) {}
    virtual void OnDropLeave(CDrop*,const CPoint_d&) {}
    virtual void OnDropMove(CDrop*,const CPoint_d&) {}
    virtual void OnDropCancel(CDrop*,const CPoint_d&) {}
    virtual void OnDropDrop(CDrop*,const CPoint_d&,EDNDActions) {}

    static CDropTarget *GetTarget(const PWindow &pWindow);

private:
    std::vector<PWindow> mDropWindowList;

    static std::vector<CDropTarget*> mTargets;

    friend class CToolkit;
    friend class CDrop;
};

/*namespace gui*/ } /*namespace buola*/ }

#endif
